package com.yeung.alo


import scala.io.StdIn
import scala.util.control.Breaks._

object 小Q爬塔 {
  def main(args: Array[String]): Unit = {
    //获取塔高度
    val height = StdIn.readInt()
    val climb: Array[Int] = Array.ofDim(100)
    val jump: Array[Int] = Array.ofDim(100)
    for (x <- 1 to height) {
      val eachFloorHeight = StdIn.readInt()
      //如果到达第i层是爬的方式,则计算其之前到达i-1层的最小时间+(i-1层与i层之间的高度), 即为到达第i层的耗时
      climb(x) = Seq(climb(x - 1), jump(x - 1)).min + eachFloorHeight
      breakable {
        if (x == 1) break()
        else
        //如果到达第i层是跳的方式(跳可以跳1层或2层, 所以到达i-1层或i-2层必须是爬),
        // 跳是不需要耗时的, 所以只需要计算到达i-1层或i-2层的耗时即可(取最小)
          jump(x) = Seq(climb(x - 1), climb(x - 2)).min
      }

    }
    println(s"最小耗时= ${Seq(climb(height), jump(height)).min}")
  }
}
